package cn.tedu.api;
/**本类用于测试包装类*/
public class TestNumber {
    static Integer i0;

    public static void main(String[] args) {
        /**包装类型也是引用类型，默认值是null
         * 除了八大基本类型，其余的都是引用类型*/
        System.out.println(i0);//null

        Integer i1 = new Integer(5);
        Integer i11 = new Integer(5);
        Integer i111 = new Integer(127);
        System.out.println(i1 == i11);//f 引用类型，比较地址值
        System.out.println(i1.equals(i11));//t

        Integer i2 = Integer.valueOf(127);
        Integer i3 = Integer.valueOf("127");
        System.out.println(i111.equals(i2));//t
        /**Integer有一个高效的效果，如果使用valueOf()的创建方式
         * 并且数据在-128~127范围内，相同的数据只会存一次
         * 后续再存都是使用之前存过的数据
         * 与String 变量名 = ”“，存在堆内存常量池中类似*/
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i2 == i3);//t
        System.out.println(i2.equals(i3));//t
        System.out.println("-------------------------***********-----------------");

        //满足高效效果的3个条件：Integer.valueOf()-128~127才能高效
        Integer i4 = Integer.valueOf(300);
        Integer i5 = Integer.valueOf("300");
        System.out.println(i4);
        System.out.println(i5);
        System.out.println(i4 == i5);//f
        System.out.println(i4.equals(i5));//t



        System.out.println("-------------------------***********-----------------");
        Double d1 = new Double(3.14);
        Double d11 = new Double(3.14);
        System.out.println(d1 == d11);//f
        System.out.println(d1.equals(d11));//t

        System.out.println("-------------------------***********-----------------");
        Double d2 = Double.valueOf(3.14);
        Double d22 = Double.valueOf("3.14");
        System.out.println(d1 == d2);//f
        System.out.println(d1.equals(d2));//t
        System.out.println(d2 == d22);//f
        System.out.println(d2.equals(d22));//t

        //parseInt():将String类型的数据转成int类型
        System.out.println(Integer.parseInt("800")+8);//808
        //parseDouble():将String类型的数据转成double类型
        System.out.println(Double.parseDouble("2.2")+1.1);//3.3

    }
}
